/***
 * 地址管理js
 * 20151029
 */
$(function () {
    // 渲染页面-通用部分；
    commTemplUtil.initPage();
    // 渲染左侧菜单;
    commTemplUtil.initCommLeftMemu();

    var defaultPagingObj = {
        total : 20,
        pageSize : 10,
        page : 1
    };
    PAGE_DATA.pagingObj = $.extend(defaultPagingObj, PAGE_DATA.pagingObj);

    //左边导航选中
    commTemplUtil.setLeftMenu(13);
    //初始地址管理信息
    getClassifyData(1);

    //绑定新增地址弹出框add
    initadd();

});

//初始地址管理
function getClassifyData(page) {

    var onClickObj = {
        onClick : function () {
            var clickPage = $(this).attr("data-page");
            getClassifyData(clickPage);
        }
    };

    //页面列表模板
    var templ = _.template($("#item-template").html());

    // 获取地址管理
    $.ajax({
        url : PAGE_CONFIG.requestUrl.queryaddr,
        type : "get",
        data : {
            page : page + "",
            pageSize : PAGE_DATA.pagingObj.pageSize,
        },
        success : function (result) {
            //响应
            setClassifyData(result.data, templ);

            //  更新翻页控件
            var tmpConf = $.extend(result.pagingConfData, onClickObj)
                commTemplUtil.initPaging("#comm-paging", tmpConf);

        },
        error : function () {
            var conf = {
                title : "注意",
                message : "获取地址信息失败!",
                ok_txt : "确定"
            };
            commTemplUtil.showErrorDialog(conf);
        }
    });

}

/**
 * 生成-信息列表,
 */
function setClassifyData(data, templ) {
    var classifyTemplHtml = templ(data);
    $("#commTabs_1_body").html(classifyTemplHtml);
    bindEvents(templ);
};

/***
 * 页面填充数据后, 绑定事件;
 */
function bindEvents(htmlObj) {

    var commBody = $("#commTabs_1_body");
    var classifyTempl = _.template($('#item-template').html());

    // 删除
    commBody.find(".sel-edit-del").on("click", function () {

        var addrId = $(this).parents("ul").attr("data-id");

        //确认框模板
        var confirmObj1 = _.template($('#item-confirm').html());
        var dia = dialog({
                title : '注意',
                content : confirmObj1
            });
        dia.showModal();

        $("#tj").on("click", function (event) {
            $.ajax({
                url : PAGE_CONFIG.requestUrl.deladdr,
                type : "delete",
                data : {
                    id : addrId,
                    _token : COMM_DATA.csrfToken
                },
                success : function (result) {
                    //响应
                    setClassifyData(result.data, classifyTempl);
                    dia.remove();
                },
                error : function () {
                    dia.remove();

                    var conf = {
                        title : "注意",
                        message : "删除地址信息失败!",
                        ok_txt : "确定"
                    };
                    commTemplUtil.showErrorDialog(conf);
                }
            });
        });
        $(".remove").click(function () {
            dia.remove();
        });
    });

    // 编辑,
    commBody.find(".editor-btn").on("click", function () {
        var addrId = $(this).parents("ul").attr("data-id");
        $.ajax({
            url : PAGE_CONFIG.requestUrl.queryaddrByid,
            type : "get",
            data : {
                id : addrId
            },
            success : function (result) {
                var editaddrTempl = _.template($("#edit_templ").html());
                var editaddrTemplHtml = editaddrTempl(result.data);
                var dia = dialog({
                        width : "550",
                        height : "320",
                        id : "editdialog",
                        title : "编辑地址",
                        content : editaddrTemplHtml,
                        onshow : function () {
                            //获取返回值
                            var that = result.data;

                            $("#province").on("change", function () {
                                var code = $(this).val();
                                renderAddrCity(code);
                            });

                            $("#city").on("change", function () {
                                var code = $(this).val();
                                renderAddrCounty(code);
                            });
                            //渲染省
                            $.ajax({
                                url : PAGE_CONFIG.requestUrl.addrProvince,
                                type : 'get',
                                dataType : 'json',
                                success : function (result) {
                                    var datas = $.extend([], result.data);
                                    var tmplObjHtml = areaTemplObj(datas);
                                    $("#province").html(tmplObjHtml);

                                    //默认选中省份
                                    $("#province").val(that.provid);
                                    //渲染市
                                    $.ajax({
                                        url : PAGE_CONFIG.requestUrl.addrCity,
                                        type : 'post',
                                        dataType : 'json',
                                        data : {
                                            //省份id
                                            code : that.provid,
                                            _token : COMM_DATA.csrfToken
                                        },
                                        success : function (result) {
                                            var datas = $.extend([], result.data);
                                            var tmplObjHtml = areaTemplObj(datas);
                                            $("#city").html(tmplObjHtml);

                                            //默认选中城市
                                            $("#city").val(that.cityid);

                                            //渲染区
                                            $.ajax({
                                                url : PAGE_CONFIG.requestUrl.addrCounty,
                                                type : 'post',
                                                dataType : 'json',
                                                data : {
                                                    //市id
                                                    code : that.cityid,
                                                    _token : COMM_DATA.csrfToken
                                                },
                                                success : function (result) {
                                                    var datas = $.extend([], result.data);
                                                    var tmplObjHtml = areaTemplObj(datas);
                                                    $("#country").html(tmplObjHtml);

                                                    //默认选中区
                                                    $("#country").val(that.areaid);
                                                },
                                                error : function (xhr, status, error) {
                                                    var tmplObjHtml = areaTemplObj([]);
                                                    $("#country").html(tmplObjHtml);
                                                }
                                            });

                                        },
                                        error : function (xhr, status, error) {
                                            var tmplObjHtml = areaTemplObj([]);
                                            $("#city").html(tmplObjHtml);
                                        }
                                    });
                                },
                                error : function (xhr, status, error) {
                                    var tmplObjHtml = areaTemplObj([]);
                                    $("#province").html(tmplObjHtml);
                                }
                            });

                            // 添加 验证逻辑;
                            var formValidate = $("#editform").validate({
                                    rules : {
                                        name : "required",
                                        detail_area : "required",
                                        code : "required",
                                        tel_phone : "required"
                                    },
                                    errorPlacement : function (error, element) {
                                        if (element.attr("type") == "text") {
                                            element.after($("<span class='error-line'  align='center'/>").append(error));
                                        }
                                    }
                                });

                            //点击保存
                            $('#editsub').click(function () {
                                if (!formValidate.form()) {
                                    return false;
                                }
                                $("#editform").submit();
                            });
                        }
                    });
                dia.showModal();
            },
            error : function () {
                var conf = {
                    title : "注意",
                    message : "获取地址信息失败!",
                    ok_txt : "确定"
                };
                commTemplUtil.showErrorDialog(conf);
            }
        });
    });
}

//地区下拉框
var areaTemplObj = _.template($('#area-option-templ').html());
//绑定新增地址弹出框add
function initadd() {
    var editor_dialog_templ = _.template($('#classify-templ').html());
    $('#add').click(function () {
        var dia = dialog({
                width : "550",
                height : "320",
                id : "adddialog",
                title : "新增地址",
                content : editor_dialog_templ,
                onshow : function () {
                    //渲染省
                    $.ajax({
                        url : PAGE_CONFIG.requestUrl.addrProvince,
                        type : 'get',
                        dataType : 'json',
                        success : function (result) {
                            var datas = $.extend([], result.data);
                            var tmplObjHtml = areaTemplObj(datas);
                            $("#province").html(tmplObjHtml);
                        },
                        error : function (xhr, status, error) {
                            var tmplObjHtml = areaTemplObj([]);
                            $("#province").html(tmplObjHtml);
                        }
                    });

                    $("#province").on("change", function () {
                        var code = $(this).val();
                        renderAddrCity(code);
                    });

                    $("#city").on("change", function () {
                        var code = $(this).val();
                        renderAddrCounty(code);
                    });

                    // 添加 验证逻辑;
                    var formValidate = $("#addform").validate({
                            rules : {
                                name : "required",
                                addr : "required",
                                country : "required",
                                postnum : "required",
                                tel : "required"
                            },
                            errorPlacement : function (error, element) {
                                if (element.attr("type") == "text") {
                                    element.after($("<span class='error-line'  align='center'/>").append(error));
                                } else if (element.find("option").length > 0) {
                                    // 下拉选择框
                                    element.parent().append($("<span class='error-line' align='center'/>").append(error.css('margin-left', '12px')));
                                }
                            }
                        });

                    //点击保存
                    $('#save').click(function () {
                        if (!formValidate.form()) {
                            return false;
                        }
                        $("#addform").submit();
                    });
                }
            });
        dia.showModal();
    });

}

//市
function renderAddrCity(provinceCode) {

    // 市
    $.ajax({
        url : PAGE_CONFIG.requestUrl.addrCity,
        type : 'post',
        dataType : 'json',
        data : {
            code : provinceCode,
            _token : COMM_DATA.csrfToken
        },
        success : function (result) {
            var datas = $.extend([], result.data);
            var tmplObjHtml = areaTemplObj(datas);
            $("#city").html(tmplObjHtml);

        },
        error : function (xhr, status, error) {
            var tmplObjHtml = areaTemplObj([]);
            $("#city").html(tmplObjHtml);
        }
    });

    $("#city").empty().html(areaTemplObj([]));
    $("#country").empty().html(areaTemplObj([]));
};
//区/县
function renderAddrCounty(cityCode) {
    // 区/县
    $.ajax({
        url : PAGE_CONFIG.requestUrl.addrCounty,
        type : 'post',
        dataType : 'json',
        data : {
            code : cityCode,
            _token : COMM_DATA.csrfToken
        },
        success : function (result) {
            var datas = $.extend([], result.data);
            var tmplObjHtml = areaTemplObj(datas);
            $("#country").html(tmplObjHtml);

            $("#country").on("change", function () {
                var code = $(this).val();
            });
        },
        error : function (xhr, status, error) {
            var tmplObjHtml = areaTemplObj([]);
            $("#country").html(tmplObjHtml);
        }
    });
};